#ifndef __STARTROUTINE_HPP__
# define __STARTROUTINE_HPP__

# include <cstdlib>

template<typename T, typename U, typename V>
class			startRoutine
{
public:
	startRoutine(void);
	startRoutine(U*);
	T			operator()(V);

private:
	U			*_function;
};

template<typename T, typename U, typename V>startRoutine::startRoutine(void)
: _function(NULL)
{
}

template<typename T, typename U, typename V>
startRoutine::startRoutine(U *func)
: _function(func)
{
}

template<typename T, typename U, typename V>
T				startRoutine::operator()(V param)
{
	return (_function(param));
}

#endif // __STARTROUTINE_HPP__